/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package vista;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import control.controladora;
import modelo.articulo;
import modelo.cliente;

/**
 *
 * @author Ileana Natalia Díaz Palacios
 * Programación III
 * Universidad Nacional
 */
public final class vistaLogin extends JFrame {

    private JTextField persona, nickn, ced, contra, telef, direc, correoE, tar;
    private JTextField codi, mark, pe, annio, esta, prec, canti;
    private JTextArea descrip;
    private JPasswordField clave;
    private controladora gestor;
    private JPanel derecho, centro;
    private JMenuBar menuPrincipal;
    private JMenu menuArchivo;
    private JMenuItem itemSalir;
    // private 

    /**
     * 
     * @param g
     */
    public vistaLogin(controladora g) {
        construirPanelIzquierdo(getContentPane());
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent we) {
                cerrarAplicacion();
            }
        });
        
        gestor = g;
    }

    void construirPanelIzquierdo(Container c) {

        ///////////////////Propiedades de la ventana principal/////////////
        this.setTitle("Agregar");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLayout(new BorderLayout(100, 30));

        menuPrincipal = new JMenuBar();

        menuArchivo = new JMenu("Archivo");
        itemSalir = new JMenuItem("Salir");
        menuArchivo.add(itemSalir);
        menuPrincipal.add(menuArchivo);

        setJMenuBar(menuPrincipal);
        
        itemSalir.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                cerrarAplicacion();
            }

        });

        LineBorder border = new LineBorder(Color.LIGHT_GRAY, 2);

        ///////////////////////////Paneles//////////////////////////////////
        derecho = new JPanel();
        derecho.setBorder(BorderFactory.createEmptyBorder(10, 10, 250, 10));


        c.add(BorderLayout.CENTER, derecho);

        //propiedades del boton para acceder 

        JButton agregarUsuario = new JButton("Agregar Usuario");
        derecho.add(agregarUsuario);
        agregarUsuario.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                // se envia a la pantalla ConstruirAgregarUsuario

                derecho.removeAll();
                derecho.updateUI();
                construirAgregarUsuario(getContentPane());
                // repaint();
            }
        });

        JButton agregarArticulos = new JButton("Agregar Artículos");
        derecho.add(agregarArticulos);
        agregarArticulos.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                // se envia a la pantalla ConstruirAgregarArticulos

                derecho.removeAll();
                derecho.updateUI();
                construirVentanaArticulos(getContentPane());

            }
        });

        setSize(500, 600);
        setVisible(true);
    }

    public void construirAgregarUsuario(Container c) {

        FlowLayout disenio;

        ///////////////////Propiedades de la ventana principal/////////////
        this.setTitle("Agregar Usuario");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLayout(new BorderLayout(100, 30));

        menuPrincipal = new JMenuBar();

        menuArchivo = new JMenu("Archivo");
        itemSalir = new JMenuItem("Salir");
        menuArchivo.add(itemSalir);
        menuPrincipal.add(menuArchivo);

        LineBorder border = new LineBorder(Color.LIGHT_GRAY, 2);

        ///////////////////////////Paneles//////////////////////////////////
        centro = new JPanel();
        centro.setBorder(BorderFactory.createEmptyBorder(10, 10, 250, 10));
        centro.setLayout(new BoxLayout(centro, BoxLayout.Y_AXIS));

        disenio = new FlowLayout();
        disenio.setAlignment(FlowLayout.CENTER);
        c.setLayout(disenio);

        //centro.setLayout(new FlowLayout(centro));

        //<editor-fold defaultstate="collapsed" desc="Labels">

        // nombre, nickname, cedula, contraseña, telf, direccion, e-mail, tarjeta de credito

        JLabel nom = new JLabel("Nombre: ");
        JLabel nickname = new JLabel("NickName: ");
        JLabel id = new JLabel("Cédula: ");
        JLabel pass = new JLabel("Contraseña: ");
        JLabel telf = new JLabel("Teléfono: ");
        JLabel dir = new JLabel("Dirección: ");
        JLabel correo = new JLabel("E-mail: ");
        JLabel tarjeta = new JLabel("Tarjeta crédito: ");

        persona = new JTextField(0x1e);
        persona.setSize(10, 5);
        persona.setMaximumSize(persona.getPreferredSize());

        nickn = new JTextField(0x1e);
        nickn.setSize(10, 5);
        nickn.setMaximumSize(nickn.getPreferredSize());

        ced = new JTextField(0x1e);
        ced.setSize(10, 5);
        ced.setMaximumSize(ced.getPreferredSize());

        contra = new JTextField(0x1e);
        contra.setSize(10, 5);
        contra.setMaximumSize(contra.getPreferredSize());

        telef = new JTextField(0x1e);
        telef.setSize(10, 5);
        telef.setMaximumSize(telef.getPreferredSize());

        direc = new JTextField(0x1e);
        direc.setSize(10, 5);
        direc.setMaximumSize(direc.getPreferredSize());

        correoE = new JTextField(0x1e);
        correoE.setSize(10, 5);
        correoE.setMaximumSize(correoE.getPreferredSize());

        tar = new JTextField(0x1e);
        tar.setSize(10, 5);
        tar.setMaximumSize(tar.getPreferredSize());

        //persona,nickn,ced,contra,telef,direc,correo,tar

        centro.add(nom);
        centro.add(persona);
        centro.add(nickname);
        centro.add(nickn);
        centro.add(id);
        centro.add(ced);
        centro.add(pass);
        centro.add(contra);
        centro.add(telf);
        centro.add(telef);
        centro.add(dir);
        centro.add(direc);
        centro.add(correo);
        centro.add(correoE);
        centro.add(tarjeta);
        centro.add(tar);

        //</editor-fold>

        c.add(centro, BorderLayout.LINE_START);

        //propiedades del boton para actualizar

        JButton agregar = new JButton("Agregar");
        centro.add(agregar);
        agregar.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                //agrega a la base de datos la informacion del usuario

                /* private JTextField persona,nickn,ced,contra,telef,direc,correoE,tar;
                private JTextField codi,mark,pe,annio,esta,prec,canti;
                private JTextArea descrip;
                private JPasswordField clave;*/
                try {
                    String nombre = persona.getText();
                    String nick = nickn.getText();
                    int cedula = Integer.parseInt(ced.getText());
                    String contrasenia = contra.getText();
                    String telefono = telef.getText();
                    String direccion = direc.getText();
                    String tarjeta = tar.getText();
                    String email = correoE.getText();
                    cliente nuevo = new cliente(nombre, nick, cedula, contrasenia, telefono, direccion, email, tarjeta);
                    JOptionPane.showMessageDialog(null, gestor.insertarCliente(nuevo) ? "Insertado" : "Error");
                    
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(null, e.toString());
                }
                centro.removeAll();
                centro.updateUI();
                construirPanelIzquierdo(getContentPane());

            }
        });

        setSize(500, 600);
        setVisible(true);
    }

    public void construirVentanaArticulos(Container c) {

        FlowLayout disenio;

        ///////////////////Propiedades de la ventana principal/////////////
        this.setTitle("Agregar Artículos");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLayout(new BorderLayout(100, 30));

        menuPrincipal = new JMenuBar();

        menuArchivo = new JMenu("Archivo");
        itemSalir = new JMenuItem("Salir");
        menuArchivo.add(itemSalir);
        menuPrincipal.add(menuArchivo);


        LineBorder border = new LineBorder(Color.LIGHT_GRAY, 2);

        ///////////////////////////Paneles//////////////////////////////////
        centro = new JPanel();
        centro.setBorder(BorderFactory.createEmptyBorder(10, 10, 250, 10));
        centro.setLayout(new BoxLayout(centro, BoxLayout.PAGE_AXIS));

        disenio = new FlowLayout();
        disenio.setAlignment(FlowLayout.CENTER);
        c.setLayout(disenio);

        // cod, nombre, marca, peso, año, estado, descripcion, precio, cantidad existente

        JLabel nom = new JLabel("Nombre: ");
        JLabel marca = new JLabel("Marca: ");
        JLabel peso = new JLabel("Peso: ");
        JLabel anio = new JLabel("Año: ");
        JLabel estado = new JLabel("Estado: ");
        JLabel descripcion = new JLabel("Descripción del producto: ");
        JLabel precio = new JLabel("Precio: ");
        JLabel cant = new JLabel("Cantidad Actual: ");

        //<editor-fold defaultstate="collapsed" desc="labels">

        persona = new JTextField(0x1e);
        persona.setSize(10, 5);
        persona.setMaximumSize(persona.getPreferredSize());

        mark = new JTextField(0x1e);
        mark.setSize(10, 5);
        mark.setMaximumSize(mark.getPreferredSize());

        pe = new JTextField(0x1e);
        pe.setSize(10, 5);
        pe.setMaximumSize(pe.getPreferredSize());

        annio = new JTextField(0x1e);
        annio.setSize(10, 5);
        annio.setMaximumSize(annio.getPreferredSize());

        esta = new JTextField(0x1e);
        esta.setSize(10, 5);
        esta.setMaximumSize(esta.getPreferredSize());

        descrip = new JTextArea(5, 30);
        descrip.setSize(10, 5);
        descrip.setMaximumSize(descrip.getPreferredSize());

        prec = new JTextField(0x1e);
        prec.setSize(10, 5);
        prec.setMaximumSize(prec.getPreferredSize());

        canti = new JTextField(0x1e);
        canti.setSize(10, 5);
        canti.setMaximumSize(canti.getPreferredSize());

        //codi,persona,mark,pe,annio,esta,descrip,prec,canti;

        centro.add(nom);
        centro.add(persona);
        centro.add(marca);
        centro.add(mark);
        centro.add(peso);
        centro.add(pe);
        centro.add(anio);
        centro.add(annio);
        centro.add(estado);
        centro.add(esta);
        centro.add(descripcion);
        centro.add(descrip);
        centro.add(precio);
        centro.add(prec);
        centro.add(cant);
        centro.add(canti);

        //</editor-fold>

        c.add(BorderLayout.CENTER, centro);

        //propiedades del boton agregar

        JButton agregar = new JButton("Agregar");
        centro.add(agregar);
        agregar.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                //agrega a la base de datos la informacion
                /*  /* persona codi, mark, pe, annio, esta, prec, canti; descrip;*/
                
                try {
                    String nombre = persona.getText();
                    String marca = mark.getText();
                    double peso = Double.parseDouble(pe.getText());
                    int anio = Integer.parseInt(annio.getText());
                    String estado = esta.getText();
                    double precio = Double.parseDouble(prec.getText());
                    int cant = Integer.parseInt(canti.getText());
                    String descripcion = descrip.getText();
                    // public articulo(String cod, String nombre, String marca, double peso, int anio, String estado, String descripcion, double precio, int cantExistente) {
                    articulo nuevo = new articulo("",nombre,marca,peso,anio,estado,descripcion,precio,cant);
                    JOptionPane.showMessageDialog(null, gestor.insertarArticulo(nuevo) ? "Insertado" : "Error");
                    
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(null, e.toString());
                }
                centro.removeAll();
                centro.updateUI();
                construirPanelIzquierdo(getContentPane());
                
            }
        });

        setSize(500, 600);
        setVisible(true);
    }
    
    public void cerrarAplicacion() {
        if (confirmar("Desea cerrar la aplicación?")) {
            gestor.cerrarAplicacion();
        }
    }
    
    public boolean confirmar(String mensaje) {
        return JOptionPane.showConfirmDialog(this, mensaje, "Confirmación",
                JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION;
    }
}
